package csu.web.credit_bank.service;

import csu.web.credit_bank.pojo.CourseResource;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface CourseResourcesService extends IService<CourseResource> {
    /**
     * [Create] 创建一个新的课程-资源关联.
     * @param courseId 课程ID.
     * @param resourceId 资源ID.
     * @return 创建成功后的关联对象.
     */
    CourseResource createLink(String courseId, String resourceId);

    /**
     * [Read] 根据课程ID获取所有关联记录.
     * @param courseId 课程ID.
     * @return 关联记录列表.
     */
    List<CourseResource> getLinksByCourseId(String courseId);

    /**
     * [Update] 更新一个已存在的关联记录. (例如：将一个章节的课件换成另一个)
     * @param linkId 要更新的关联记录ID.
     * @param newResourceId 新的资源ID.
     * @return 更新后的关联对象.
     */
    CourseResource updateLink(String linkId, String newResourceId);

    /**
     * [Delete] 根据关联记录的ID删除该关联.
     * @param linkId 要删除的关联记录ID.
     * @return 如果删除成功，返回true.
     */
    boolean deleteLinkById(String linkId);

    /**
     * [Delete] 根据课程ID和资源ID删除关联. (这是您之前的业务方法，予以保留)
     * @param courseId 课程ID.
     * @param resourceId 资源ID.
     * @return 如果删除成功，返回true.
     */
    boolean deleteLinkByCourseAndResource(String courseId, String resourceId);

    CourseResource createOrUpdateLinkWithChapter(String courseId, String resourceId, int chapter);

    int getMaxChapterByCourseId(String courseId);
}